// Copyright (c) 2023 Jingdong Technology Information Technology Co., Ltd.
// SBOM-TOOL is licensed under Mulan PSL v2.
// You can use this software according to the terms and conditions of the Mulan PSL v2.
// You may obtain a copy of Mulan PSL v2 at:
//          http://license.coscl.org.cn/MulanPSL2
// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
// MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
// See the Mulan PSL v2 for more details.

package format

type Updater interface {
	Name() string
	Update(string) error
	Desc() string
}

type updater struct {
	name   string
	desc   string
	update func(string) error
}

func NewUpdater(name string, desc string, update func(string) error) Updater {
	return &updater{name: name, desc: desc, update: update}
}

func (u *updater) Name() string {
	return u.name
}

func (u *updater) Update(v string) error {
	if u.update != nil {
		return u.update(v)
	}
	return nil
}

func (u *updater) Desc() string {
	return u.desc
}
